The field of the present disclosure relates generally to data reading systems and machine-readable symbols, and in particular, to systems and methods for extracting bitstream data in two-dimensional optical codes, such as DotCode symbology.
Generally speaking, optical codes are machine-readable representations of data typically comprising of a pattern of dark elements and light spaces. For example, one-dimensional codes, such as a Universal Product Code (“UPC”) and EAN/JAN codes, comprise parallel lines of varying widths and spaces. Two-dimensional codes, such as PDF417, Maxicode codes, and DotCode codes may comprise other features, such as rectangles, dots, hexagons and other geometric patterns in two dimensions. Originally, optical codes were scanned by specialized optical scanners called optical code readers (e.g., barcode readers). More recent application software developments have provided the ability for other electronic devices, such as phones and cameras, to read barcodes and other optical codes.
Data reading devices, such as optical code (e.g., barcode) scanners/readers, RFID readers, and the like, are widely used to read data in the form of optical codes, digital watermarks, or other encoded symbols printed on various objects. These systems may be used in a wide variety of applications, such as inventory control and point-of-sale transactions in retail stores. Many of these data reading systems incorporate an image sensor, or imager, which acquires images of the item and optical code. The captured data is thereafter transmitted to a host processing device for decoding the data. In some instances, the optical codes may be arranged or located on objects that include many additional images, features, and background text. Accordingly, to successfully obtain data from the optical codes, the data readers must be able to distinguish the target optical codes from the surrounding environment.
As briefly noted previously, two-dimensional optical codes, such as DotCode, include black and white modules arranged in either a square or rectangular matrix pattern. Within the borders of the optical code are rows and columns of cells encoding information. For example, in DotCode symbology, the symbol includes a rectangular array of disconnected dots organized on a grid diagonal to that rectangular, similar to the dark squares on a checkerboard. The alternating dot positions are called data dot locations and are the only positions that could be used for data encoding.
When decoding two-dimensional optical codes from images, a data reader is used to identify regions in the image having a high likelihood of containing the target code. Once such regions are found, the data reader focuses on determining whether these regions contain the target code, thereby reducing overall processing time. In many data reading systems, this process is time-consuming and can prove to be challenging, especially when handling complex symbologies. For example, a common bitstream extracting method for handling DotCode symbology relies on Fast Fourier Transform methodologies and requires hardware with robust computational power and memory size. While such data reading methods may be appropriate for larger systems, these methods are difficult to implement in a smaller data reader system.
Accordingly, the present inventor has determined that it would be desirable to develop a data reading system with improved performance to accurately read and process two-dimensional optical codes, such as DotCode, using low-cost components and applying robust and efficient computational processes. Additional aspects and advantages will be apparent from the following detailed description of example embodiments, which proceeds with reference to the accompanying drawings. It should be understood that the drawings depict only certain example embodiments and are not to be considered as limiting in nature.